﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Content;
using EpsiRisk.MoteurJeu;
using EpsiRisk.DonneesPlateau;

namespace EpsiRisk.AffichageJeu
{
    public class ClassZoneNouveauJeu : ClassZone
    {
        public bool Visible;
        static Texture2D SpriteNouveauJeu;
        static Texture2D SpriteValider;
        static Texture2D SpriteFermer;
        static Texture2D SpritePlus;

        ClassBouton Valider;
        ClassBouton Fermer;
        public ClassBouton BoutonAjouterJoueur;
        public List<ClassNouveauJeuLigne> lignesNouveauJeu;

        public ClassZoneNouveauJeu()
        {
            position = new Vector2(150, 110);
            height = 300;
            width = 500;
            backcolor = Color.TransparentWhite;
            Visible = false;
        }

        internal override void Draw(SpriteBatch spriteBatch)
        {
            if (Visible)
            {
                spriteBatch.Begin();
                spriteBatch.Draw(SpriteNouveauJeu, position, null, Color.White);

                //Joueurs
                spriteBatch.DrawString(ClassDonneesGlobales.SpriteTxt, "Nom du joueur", new Vector2(position.X + 95, position.Y + 25), Color.Black);
                spriteBatch.DrawString(ClassDonneesGlobales.SpriteTxt, "Type", new Vector2(position.X + 337, position.Y + 25), Color.Black);

                spriteBatch.End();

                foreach (ClassNouveauJeuLigne l in lignesNouveauJeu)
                {
                    l.Draw(spriteBatch);
                }
                base.Draw(spriteBatch);
            }
        }

        public void DessinerJoueurs()
        {
            int i;
            for (i = 0; i <= ClassJoueur.listeJoueurs.Count() - 1; i++)
            {
                lignesNouveauJeu[i].Visible = true;
            }
        }

        internal override void initialiser(ContentManager content)
        {
            SpriteNouveauJeu = content.Load<Texture2D>("Sprites/PopupMenu/NouveauJeu/SpriteNouveauJeu");
            SpriteValider = content.Load<Texture2D>("Sprites/PopupMenu/NouveauJeu/SpriteValider");
            SpriteFermer = content.Load<Texture2D>("Sprites/PopupMenu/SpriteFermer");
            SpritePlus = content.Load<Texture2D>("Sprites/PopupMenu/NouveauJeu/SpritePlus");

            //Bouton Fermer
            Fermer = new ClassBouton(SpriteFermer);
            Fermer.position = new Vector2(484, 2);
            Fermer.width = 13;
            Fermer.height = 15;
            AddBouton(Fermer);
            Fermer.Clicked += new EventHandler(Fermer_Clicked);

            //Bouton Valider
            Valider = new ClassBouton(SpriteValider);
            Valider.position = new Vector2(25, 250);
            Valider.height = 28;
            Valider.width = 80;
            AddBouton(Valider);
            Valider.Clicked += new EventHandler(Valider_Clicked);

            //Bouton d'ajout d'un joueur
            BoutonAjouterJoueur = new ClassBouton(SpritePlus);
            BoutonAjouterJoueur.position = new Vector2(440, 26);
            BoutonAjouterJoueur.height = 19;
            BoutonAjouterJoueur.width = 20;
            AddBouton(BoutonAjouterJoueur);
            BoutonAjouterJoueur.Clicked += new EventHandler(JoueurAjouter_Clicked);

            //lignes de joueurs
            lignesNouveauJeu = new List<ClassNouveauJeuLigne> { };
            int i;
            for (i = 0; i <= 7; i++)
            {
                ClassNouveauJeuLigne ligne = new ClassNouveauJeuLigne(i);
                ligne.position = new Vector2(position.X, position.Y + i * 22);
                ligne.initialiser(content);
                lignesNouveauJeu.Add(ligne);
            }
        }

        void Fermer_Clicked(object sender, EventArgs e)
        {
            ClassDonneesGlobales.zoneNouveauJeu.Visible = false;
        }

        void Valider_Clicked(object sender, EventArgs e)
        {

            if (ClassJoueur.listeJoueurs.Count >= 2)
            {
                ClassEtatPartie.demarrerPartie();
                ClassDonneesGlobales.zoneNouveauJeu.Visible = false;
            }
            else
            {
                ClassDonneesGlobales.zoneOverlayMessage.PopText("Il faut au moins 2 joueurs");
            }
        }

        void JoueurAjouter_Clicked(object sender, EventArgs e)
        {

            if (ClassJoueur.listeJoueurs.Count < 8)
            {
                new ClassJoueur();
                ClassDonneesGlobales.zoneNouveauJeu.lignesNouveauJeu[ClassJoueur.listeJoueurs.Count - 1].Visible = true;

            }
            if (ClassJoueur.listeJoueurs.Count == 8)
            {
                BoutonAjouterJoueur.Visible = false;
            }
        }

        internal override void clicXY(int x, int y)
        {

            foreach (ClassNouveauJeuLigne l in lignesNouveauJeu)
            {
                if (l.index < ClassJoueur.listeJoueurs.Count)
                {
                    l.clicXY(x, y - l.index * 22);
                }
            }
            base.clicXY(x, y);
        }
    }
}
